// 1.引入axios
import axios from 'axios'
import qs from 'qs'


// 2,做环境切换
let baseURL = '';
if(process.env.NODE_ENV === 'development'){
    baseURL = '/api';//开发环境下
}else if(process.env.NODE_ENV === 'production'){
    baseURL = '';//生产环境
}

// 3.自定义axios
const instance = axios.create({
    baseURL:baseURL,
    timeout:1000,
})

// 4.请求拦截器
instance.interceptors.request.use(config=>{
    // console.group('本次请求的地址为:'+config.url)
    // 做令牌验证
    return config
},err=>{
    return Promise.reject(err)
})

// 5.响应拦截器
instance.interceptors.response.use(res=>{
    // console.group('本次响应的地址为:'+res.config.url)
    // 统一验证
    return res
},err=>{
    return Promise.reject(err)
})


// 封装get并导出
/**
 * 参数一:url地址
 * 参数二:[请求的数据]
*/
export function get(url,params=null){
    
    /**
     * 1,实例化Promise时传递一个参数: function
     * 2.在function中接受两个参数
     * 3.参数一: resolve[类型为function]
     * 4.参数二: reject[类型为function]
    */
  return  new Promise((resolve,reject)=>{
        instance.get(url,{params}).then(res=>{
            resolve(res.data)
        }).catch(err=>{
            reject(err.data)
        })
    })
}

// 封装post并导出
export function post(url,params,isFile=false){
    // 处理headers头
    let config = {
        headers:{
            "Content-Type":"application/x-www-form-urlencoded"
        }
    }
    // 对表单数据进行序列化操作
    let data = qs.stringify(params)

    if(isFile){
        config = {
            headers:{
                "Content-Type":"multipart/form-data"
            }
        }
        data =  new FormData()
        for(let i in params){
            data.append(i,params[i]) 
        }
    }
    /**
     * 1,实例化Promise时传递一个参数: function
     * 2.在function中接受两个参数
     * 3.参数一: resolve[类型为function]
     * 4.参数二: reject[类型为function]
    */
   return new Promise((resolve,reject)=>{
        instance.post(url,data,config).then(res=>{
            resolve(res.data)
        }).catch(err=>{
            reject(err.data)
        })
    })

}